package day230425;

import java.util.Scanner;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/4/25 10:10
 * 淘宝网店
 */
public class Main01 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
            // 录入起始日期和结束日期
            int fromYear = scan.nextInt();
            int fromMonth = scan.nextInt();
            int fromDay = scan.nextInt();
            int toYear = scan.nextInt();
            int toMonth = scan.nextInt();
            int toDay = scan.nextInt();
            // 总收益为两个日期差之间的完整年 + 末尾日期的少算的收益 - 起始日期多算的收益
            int profit = 0; // 用于计算收益
            if (fromYear == toYear) {
                // 如果是同一年则不需要算完整年, 单独考虑
                profit = getIncomeForYear(toYear, toMonth, toDay)
                        -getIncomeForYear(fromYear, fromMonth, fromDay)
                        +(itSPrime(fromMonth) ? 1 : 2);
            } else {
                // 先计算中间度过的完整年的收益
                for (int i = fromYear; i < toYear; i++) {
                    profit += AnnualIncome(i);
                }
                // 减去第一年多算的收益
                profit -= getIncomeForYear(fromYear, fromMonth, fromDay);
                // 加上最后一年少算的收益
                profit += getIncomeForYear(toYear, toMonth, toDay);
                // 加上起始日期被减去的收益
                profit += itSPrime(fromMonth) ? 1 : 2;
            }
            System.out.println(profit);
        }
        scan.close();
    }

    // 存储平年每个月的收益, profitForYear[1] 表示完整前 2 月的收益
    static int[] profitForYear = {62, 90, 121, 181, 212, 272, 303, 365, 425, 487, 517, 579};

    // 判断该年是不是闰年
    private static boolean isLeapYear(int year) {
        return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
    }

    // 计算完整一整年的收益, 素数月每天1元, 其余每天2元
    private static int AnnualIncome(int year) {
        int profit = 0; // 计算收益
        // 2 3 5 7 11为素数月
        profit = 31 * 2
                + 28
                + 31
                + 30 * 2
                + 31
                + 30 * 2
                + 31
                + 31 * 2
                + 30 * 2
                + 31 * 2
                + 30
                + 31 * 2;
        profit += isLeapYear(year) ? 1 : 0;
        return profit;
    }

    // 计算每一年的收益从1月1开始计算
    private static int getIncomeForYear(int year, int month, int day) {
        int income = 0;
        // 先统一按照平年对待
        // eg month = 3, day = 4
        if (month >= 2) {
            income += profitForYear[month - 2]; // 先算上除了 month 月前几个月的收入
        }
        if (month > 2) {
            // 大于 2 月需要单独对闰年进行处理, 2 月收益多一天
            income += isLeapYear(year) ? 1 : 0;
        }
        income += itSPrime(month) ? day : 2 * day;
        return income;
    }

    // 判断每个月是否为素数
    private static boolean itSPrime(int month) {
        if (month <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(month); i++) {
            if (month % i == 0) {
                return false;
            }
        }
        return true;
    }
}
